/**
 * @description: 公共中文配置
 * @file: zh-CN.ts
 * @author: Evan
 * @date: 2025.06.20 14:05:00
 * @week: 周五
 * @version: V
 */

import { numberToChinese } from '../methods'

export default {
  name: 'zh-cn',
  title: '简体中文',

  // 公共不可修改
  message: {
    login: '登录',
    home: '首页',
    loading: '加载中',
    glpt: '管理平台',
    test: '测试',
    exit: '退出',

    all: '全部',
    query: '查询',
    data: '数据',
    device: '设备',
    add: '新增',
    edit: '编辑',
    reset: '重置',
    update: '更新',
    delete: '删除',
    export: '导出',
    import: '导入',
    operate: '操作',
    details: '详情',
    cancel: '取消',
    confirm: '确认',
    save: '保存',
    back: '返回',

    // 维度
    area: '区域',
    branch: '支路',
    team: '班组',
    department: '部门',
    itemize: '分项',
    system: '系统',

    time: '时间',
    date: '日期',
    create_time: '创建时间',
    start_time: '开始时间',
    end_time: '结束时间',

    node: '节点',
    location: '位置',
    status: '状态',
    success: '成功',
    no_data: '没有数据',

    refresh: '刷新',
    close: '关闭',
    close_other: '关闭其他',
    close_all: '关闭所有',

    view_details: '查看详情',
    print: '打印',
    download: '下载',

    // 图表
    max: '最大值',
    min: '最小值',
    avg: '平均值',

    // 周
    weeks: ['周日', '周一', '周二', '周三', '周四', '周五', '周六'],

    yes: '是',
    no: '否'
  },

  // 模块
  module: {
    db: '数字大屏',
    alarm: '报警中心',
    base: '基础设置',
    notice: '消息中心'
  },

  user: {
    home: '@:route.home',
    logout: '@:message.exit@:message.login'
  },

  // 函数
  fn: {
    // 数字转换单位
    num: ({ named }: { named: (v: string) => number }) => {
      // 转换值
      const num = named('value') || 0
      // 小数点精度
      let precision = named('precision')
      precision === void 0 && (precision = 2)

      let newNum = ''
      // 防止传入其他不可转换类型
      if (isNaN(Number(num))) return num
      if (Math.abs(num) >= 100000000) {
        const n: any = num / 100000000
        newNum = n.toFixed(precision) * 1 + '亿'
      } else if (Math.abs(num) >= 10000) {
        const n: any = num / 10000
        newNum = n.toFixed(precision) * 1 + '万'
      } else {
        const n: any = num
        newNum = n.toFixed(precision) * 1 + ''
      }
      return newNum
    },

    // 转换大写数值
    bigNUm: ({ named }: { named: (v: string) => number }) => {
      // 转换值
      const num = named('value') || 0
      return numberToChinese(num)
    }
  },

  // 校验提示
  rule_tip: {
    email: '请输入有效的邮箱',
    tel: '请输入有效的电话号码'
  },

  // 菜单
  menu: {
    disabled: '暂未开通权限'
  },

  // 请求状态
  request_status: {
    '400': '请求错误(400)',
    '401': '未授权，请重新登录(401)',
    '403': '拒绝访问(403)',
    '404': '请求出错(404)',
    '405': '请求方法不允许(405)',
    '406': '请求不接受(406)',
    '408': '请求超时(408)',
    '414': '请求 URL 过长(414)',
    '500': '服务器错误(500)',
    '501': '服务未实现(501)',
    '502': '网关错误(502)',
    '503': '服务不可用(503)',
    '504': '网络超时(504)',
    '505': 'HTTP 版本不受支持(505)',
    other: '连接出错'
  },

  // 组件
  component: {
    // 查询时间组件
    query_time: {
      day: '本日',
      month: '本月',
      year: '本年',

      datetimerange: {
        start_time: '开始时间',
        end_time: '结束时间'
      },

      monthrange: {
        start_time: '开始月份',
        end_time: '结束月份'
      },

      yearrange: {
        start_time: '开始年份',
        end_time: '结束年份'
      },
      daterange: {
        start_time: '开始日期',
        end_time: '结束日期'
      }
    },

    // form 表单组件
    zform: {
      placeholder: {
        input: '请输入',
        select: '请选择',
        start_date: '开始日期',
        end_date: '结束日期'
      },
      upload: {
        btn: '上传附件',
        delete: '@:message.delete',
        tip: {
          base: '支持文件格式有 {type}，{size}最多可上传 {limit} 个！',
          limit: '最多可上传{limit}个文件，请删除后在上传！',
          type: '文件格式不正确，有效格式 {type}',
          size: '文件大小不能超过 {size}'
        }
      }
    },

    // table 组件
    ztable: {
      add: '@:message.add',
      edit: '@:message.edit',

      confirm: {
        delete_title: '确认',
        delete: '请确认是否删除？',
        delete_multiple: '请确认是否删除选中的列？'
      },

      msg: {
        delete_success: '删除成功！',
        no_select: '请选择要删除的列！',
        success: "@:{'message.success'}！"
      }
    },

    // 弹窗表单
    zdialogform: {
      reset: '@:message.reset',
      cancel: '@:message.cancel',
      save: '@:message.save',
      save_and_continue_add: '保存并继续添加'
    }
  }
}
